function myPro(x, y) {
  // return Promise.resolve('Hello');
}

function formatDate(date, fmt) {
  // 1. 获取年份
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  // 2. 根据正则匹配对象中key为规则的 月、日、时、分、秒
  // 问: 为什么不把y+也写在这里呢？
  // ps: 不想写..., y可能会有4个的情况, 所以处理比较特殊, 下面key值中要展示的都是长度为2位的, 我们还引用了一个补0算法
  let o = {
    // 月份是 0~11 的 所以要+1
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + '';
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
  }
  // 3. 最后返回处理后的时间
  return fmt;
};


// 补0函数: 在不足两位的时候, 补一个0补齐两位
function padLeftZero(str) {
  // 最后只会保留两位 例: 1 >>> 01, 001 >>> 01, 11 >>> 11
  return ('00' + str).substr(str.length);
};

if (false) {
  // 分步理解 [时间戳 >>> 字符串] 函数内部处理
  let formatStr = 'yy年MM月dd日';
  let date = new Date();

  console.log("匹配规则 >>>", formatStr);

  // 1. 通过正则/(y+)/匹配一个有没有y字符 有几个？
  // 例: 
  // 有一个, 在获取年份时删除前三个, 结果为一个;
  // 有两个, 在获取年份时删除前两个, 结果为两个;
  // 有三个, ...
  if (/(y+)/.test(formatStr)) {
    // date.getFullYear() + '' : 将获取数字的年份通过字符串拼接转换为字符串 >>> [JS的弱类型特点]
    // yearSubstr: 截取处理后的年份
    // formatStr.replace(RegExp.$1, yearSubstr) : 将正则匹配到的字符串 与 截取后的的年份 替换
    let year = date.getFullYear() + '';
    let yearSubstr = year.substr(4 - RegExp.$1.length);
    formatStr = formatStr.replace(RegExp.$1, yearSubstr);
    console.log("返回时间 >>>", formatStr);
  } else {
    console.log("返回时间 >>>", formatStr);
  }

  // 题外话:
  // 数字类型获取长度 >>> undefined
  // let a = 10;
  // console.log(a.length);

  // 2. 月、日、时、分、秒 处理
  let obj = {
    // 月份是 0~11 的 所以要+1
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };
  Object.keys(obj).forEach(key => {
    // 先将获取到的数字类型的参数值通过隐式转换 >>> 字符串类型 [不按照这个规则走, 后续补0获取长度时会出现问题, 因为数字类型不能直接获取长度, 会返回undefined]
    let str = obj[key] + '';
    if (new RegExp(`(${key})`).test(formatStr)) {
      // 例: 用户如果输入M >>> 9 MM >>> 09
      formatStr = formatStr.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
    // console.log(obj[key]);
  })
  console.log("返回时间 >>>", formatStr);

  // console.log(padLeftZero(10));
}

var a = 0;
if (true) {
  a = 1;
  function a() { };
  a = 20;
  console.log(a);
}
console.log(a);

var b = 0;
if (true) {
  b = 1;
  function b() { };
  b = 20;
  console.log(b);
}
console.log(b);
